Subject: DLSw Version 0.13 Chapter 7, Capabilities Exchange

From: "Alan K. Bartky, Manager of Technology" <[email-masked]>
Date: Mon, 3 Oct 94 15:41:59 PDT

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 1
X-Sun-Content-Length: 40

Here is chapter 7 of DLSw Version 0.13

----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: d7.txt
X-Sun-Content-Lines: 869
X-Sun-Content-Length: 29074



RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

7. Capabilities Exchange Formats/Protocol:

   The Data Link Switching Capabilities Exchange is a special DLSw Switch-
   to-Switch control message that describes the capabilities of the sending
   data link switch. This control message is sent after the switch-to-
   switch connection is established and optionally during run time if
   certain operational parameters have changed and need to be communicated
   to the partner switch.

   The actual contents of the Capabilities Exchange is in the data field
   following the SSP message header.  The Capabilities Exchange itself is
   formatted as a single General Data Stream (GDS) Variable with multiple
   type "LT" structured subfields.

   The SSP Message Header has the following fields set for the Capabilities
   Exchange:

   Offset   Field                 Value
   ------   -----                 -----
   0x00     Version Number        0x31
   0x01     Header Length         0x4B (decimal 72)
   0x02     Message Length        same as LL in GDS Variable
   0x14     Message Type          0x20 (CAP_EXCHANGE)
   0x16     Protocol Id           0x42
   0x17     Header Number         0x01
   0x23     Message Type          0x20 (CAP_EXCHANGE)
   0x38     Direction             0x01 for CapEx request
                                  0x02 for CapEx response

   Other fields in the SSP header are not referenced and should be set to
   zero.

   The DLSw Capabilities Exchange Request has the following overall format:

   +----+----+-----------------+
   | LL | ID | Control Vectors |
   +----+----+-----------------+

   0-1         Length, in binary, of the DLSw Capabilities Exchange
               Request GDS Variable.  The value of LL is the sum of
               the length of all fields in the GDS Variable (i.e.
               length of LL + length of ID + length of Control
               Vectors).

   2-3         GDS Id: 0x1520

   4-n         Control Vectors consisting of type LT structured subfields
               (i.e. the DLSw Capabilities Exchange Structured Subfields)

   Type LT structured subfields consist of a 1-byte length field (the "L"),
   a 1-byte type field (the "T") and n-bytes of data.  The length field
   includes itself as well as the structured subfield.  The structured
   subfield consists of the type field and data so the length is n + 2.

AIW DLSw Related Interest Group                              [Page 63]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   This imposes a length restriction of 253 bytes on all data contained in
   a structured subfield.

7.1. Control Vector Id Range

   Control Vector identifiers (i.e. Type) in the range of 0x80 through 0xCF
   are reserved for use by the Data Link Switching standard.

   Control Vector identifiers (i.e. Type) in the range of 0xD0 through 0xFD
   are used for vendor-specific purposes.

   Currently defined vectors are:

     Vector Description                           Hex Value

     Vendor Id Control Vector                     0x81
     DLSw Version Control Vector                  0x82
     Initial Pacing Window Control Vector         0x83
     Version String Control Vector                0x84
     Mac Address Exclusivity Control Vector       0x85
     Supported SAP List Control Vector            0x86
     TCP Connections Control Vector               0x87
     NetBIOS Name Exclusivity Control Vector      0x88
     MAC Address List Control Vector              0x89
     NetBIOS Name List Control Vector             0x8A
     Reserved for future use                      0x8B - 0xCF
     Vendor Specific                              0xD0 - 0xFD

7.2. Control Vector Order and Continuity

   Since their contents can greatly affect the parsing of the Capabilities
   Exchange GDS Variable, the required control vectors must occur first and
   appear in the following order:  Vendor Id, DLSw Version Number, Initial
   Pacing Window, Supported SAP List. The remainder of the Control Vectors
   can occur in any order.

   Control Vectors that can be repeated (i.e. MAC Address List Control
   Vector and NetBIOS Name List Control Vector) are not necessarily
   adjacent.  It is advisable, but not required, to have the Exclusivity
   Control Vector occur prior to either of the above two vectors so that
   the use of the individual MAC addresses or NetBIOS names will be known
   prior to parsing them.

AIW DLSw Related Interest Group                              [Page 64]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

7.3. Run-Time Capabilities Exchange

   Capabilities exchange always occurs when the SSP connection is started
   between two DLSw switches.  Capabilities Exchange can also occur at run-
   time, typically when a configuration change is made.

   Support for run-time Capabilities Exchange is optional.  If a node does
   not  support receiving/using run-time capex and receives one, it should
   discard it  quietly (not send back a negative response).  If a node
   supports receipt of  run-time capabilities, it should send a positive or
   negative response as  appropriate.  The receiver of a negative response
   to a run-time capabilities  message is not required to take down its TCP
   connections with the offended partner.

   Run-time Capabilities Exchange can consist of one or more of the
   following control vectors.  Note that the control vectors required at
   start-up are not present in a  run-time Capabilities Exchange.

        1. MAC Address Exclusivity CV,
        2. NetBIOS Name Exclusivity CV,
        3. MAC Address List CV,
        4. NetBIOS Name List CV,
        5. Supported SAP List CV

   A run-time capabilities exchange is a replacement operation.  As such,
   all pertinent MAC addresses and NetBIOS names must be specified in the
   run-time exchange. In addition, run-time changes in capabilities will
   not effect existing link station circuits.

7.4. Capabilities Exchange Filtering Responsibilities

   Recipients of the SAP, MAC, and NetBIOS lists are not required to
   actually use them to filter traffic, etc., either initially or at run-
   time.

AIW DLSw Related Interest Group                              [Page 65]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

7.5. DLSw Capabilities Exchange Structured Subfields

   The Capabilities Exchange Subfields are listed int the table below and
   are described in the following sections:
   The following table summarizes the DLSw Capabilities Exchange Control
   Vectors.

         Required                      Allowed @
    ID   @ Startup  Length  Repeatable  Runtime  Order  Content
   ====  =========  ======  ==========  =======  =====
   =====================
   0x81     Y        0x05        N         N       1    Vendor ID

   0x82     Y        0x04        N         N       2    DLSw Version

   0x83     Y        0x04        N         N       3    Initial pacing
                                                        window

   0x84     N      >=0x02        N         N       5+   Version String

   0x85     N        0x03        N         Y       5+   MAC Address
                                                        Exclusivity

   0x86     Y        0x12        N         Y       4    Supported SAP List

   0x87     N        0x03        N         N       5+   TCP Connections

   0x88     N        0x03        N         Y       5+   NetBIOS Name
                                                        Exclusivity

   0x89     N        0x0E        Y         Y       5+   MAC Address List

   0x8A     N      <=0x13        Y         Y       5+   NetBIOS Name List

7.5.1. Vendor Id (0x81) Control Vector

   The Vendor Id control vector identifies the manufacturer's IEEE assigned
   Organizationally Unique Identifier (OUI) of the Data Link Switch sending
   the DLSw Capabilities Exchange.  The OUI is sent in non-canonical
   (Token-Ring) format.  This control vector is required and must be the
   first control vector.

AIW DLSw Related Interest Group                              [Page 66]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Offset  Length  Value       Contents
   ------  ------  -----       --------
      0       1    0x05        Length of the Vendor Id structured
                               subfield

      1       1    0x81        key = 0x81  that identifies this as the
                               Vendor Id structured subfield

     2-4      3                the 3-byte Organizationally Unique
                               Identifier (OUI) for the vendor
                               (non-canonical format)

7.5.2. DLSw Version (0x82) Control Vector

   The DLSw Version control vector identifies the particular version of the
   DLSw standard supported by the sending Data Link Switch.  This control
   vector is required and must follow the Vendor Id Control Vector.

   Offset  Length  Value       Contents
   ------  ------  -----       --------
      0       1    0x04        Length of the Version String structured
                               subfield

      1       1    0x82        key = 0x82  that identifies this as the
                               DLSw Version structured subfield

      2       1                the hexadecimal value representing the
                               DLSw standard Version number of the
                               sending Data Link Switch.
                                 0x01 (indicates version 1 - closed pages)

      3       1                the hexadecimal value representing the
                               DLSw standard Release number of the
                               sending Data Link Switch.
                                 0x00 (indicates release 0)

7.5.3. Initial Pacing Window (0x83) Control Vector

   The Initial Pacing Window control vector specifies the initial value of
   the receive pacing window size for the sending Data Link Switch.  This
   control vector is required and must follow the DLSw Version Control
   Vector.

   Offset  Length  Value       Contents
   ------  ------  -----       --------
      0       1    0x04        Length of the Initial Pacing Window
                               structured subfield

      1       1    0x83        key = 0x83  that identifies this as the
                               Initial Pacing Window structured subfield

     2-3      2                the pacing window size.

AIW DLSw Related Interest Group                              [Page 67]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

7.5.4. Version String (0x84) Control Vector

   The Version String control vector identifies the particular version
   number of the sending Data Link Switch.  The format of the actual
   version string is vendor-defined.  This control vector is optional.

   Offset  Length  Value       Contents
   ------  ------  -----       --------
      0       1    0xn         Length of the Version String structured
                               subfield

      1       1    0x84        key = 0x84  that identifies this as the
                               Version String structured subfield

     2-n     n-2               the ASCII string that identifies the
                               software version for the sending DLSw.

7.5.5. MAC Address Exclusivity (0x85) Control Vector

   The MAC Address Exclusivity control vector identifies how the MAC
   Address List control vector data is to be interpreted.  Specifically,
   this control vector identifies whether the MAC addresses in the MAC
   Address List control vectors are the only ones accessible via the
   sending Data Link Switch.

   If a MAC Address List control vector is specified and the MAC Address
   Exclusivity control vector is missing, then the MAC addresses are not
   assumed to be the only ones accessible via this switch.

   A node may specify that it supports no local MAC addresses by including
   in its capabilities the MAC Address List Exclusivity CV (with byte 2 ==
   0x01), and not including any instances of the MAC Address List CV.

AIW DLSw Related Interest Group                              [Page 68]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Offset  Length  Value       Contents
   ------  ------  -----       --------
      0       1    0x03        Length of the Exclusivity structured
                               subfield

      1       1    0x85        key = 0x85 that identifies this as the
                               MAC address Exclusivity structured
                               subfield

      2       1                an indicator of the relationship of the
                               MAC addresses to the sending Data Link
                               Switch.
                                 0x00     the MAC addresses specified in
                                          this Capabilities Exchange
                                          can be accessed via this
                                          switch but are not the
                                          exclusive set (i.e. other
                                          entities are accessible in
                                          addition to the ones specified)
                                 0x01     the MAC addresses specified in
                                          this Capabilities Exchange
                                          are the only ones accessible
                                          via this switch.

AIW DLSw Related Interest Group                              [Page 69]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

7.5.6. SAP List Support (0x86) Control Vector

   The SAP List Support control vector identifies support for SAPs by the
   sending Data Link Switch. Each bit in the SAP control vector data field
   represents a SAP as defined below. This vector is required and must
   follow the Initial Pacing Window Control Vector.

   Offset  Length  Value       Contents
   ------  ------  -----       --------
      0       1     0x12       Length of the Supported SAP List structured
                               subfield

      1       1     0x86       key = 0x86 that identifies this as the
                               Supported SAP List structured subfield

     2-17    16                the 16-byte bit vector describing all
                               even numbered SAP's enabled.

                               Each Bit within the 16 byte bit vector will
                               indicate whether an even numbered SAP is
                               enabled (b'1') or disabled (b'0').

                               Each Byte within the 16 byte bit vector
                               will be numbered from 0 - F. (In the
                               following 1 byte example x would be
                               equal to the appropriate byte number.)

   EDITOR'S NOTE, WE NEED TO BE CLEAR ABOUT BIT ORDERING IN THE FOLLOWING
   DIAGRAM (LEAST SIGNIFICANT, MOST SIGNIFICANT, BITS 7 THROUGH 0)

                               bbbb bbbb....
                               |||| ||||
                               |||| |||SAP 0x0E enabled or not
                               |||| |||
                               |||| ||SAP 0x0C enabled or not
                               |||| ||
                               |||| |SAP 0x0A enabled or not
                               |||| |
                               |||| SAP 0x08 enabled or not
                               ||||
                               |||SAP 0x06 enabled or not
                               |||
                               ||SAP 0x04 enabled or not
                               ||
                               |SAP 0x02 enabled or not
                               |
                               SAP 0x00 enabled or not

AIW DLSw Related Interest Group                              [Page 70]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

7.5.7. TCP Connections (0x87) Control Vector

   The TCP Connections control vector indicates the support of an alternate
   number of TCP Connections for the Data Link Switching traffic.  The base
   implementation of Data Link Switching supports two TCP Connections, one
   for each direction of data traffic.

   This control vector is optional.  If it is omitted in a DLSw
   Capabilities Exchange, then two TCP Connections are assumed.  It is
   further assumed that if a Data Link  Switch can support one TCP session,
   it can support two TCP Connections.

   If TCP Connections CV values agree and the number of connections is one,
   then the  DLSw with the higher ip address must tear down the TCP
   connections on its local port 2065.

   The format of the TCP Connections Control Vector is shown below:

   Offset  Length  Value       Contents
   ------  ------  -----       --------
      0       1    0x03        Length of the TCP Connections structured
                               subfield

      1       1    0x87        key = 0x87  that identifies this as the
                               TCP Connections structured subfield

      2       1                an indicator of the support for an
                               alternate number of TCP Connections by
                               the sending Data Link Switch.
                                 0x01      the number of TCP Connections
                                           may be brought down to one
                                           after Capabilities Exchange
                                           is completed.
                                 0x02      the number of TCP Connections
                                           will remain at two for
                                           the duration of the DLSw
                                           connection.

7.5.8. NetBIOS Name Exclusivity (0x88) Control Vector

   The NetBIOS Name Exclusivity control vector identifies how the NetBIOS
   Name List control vector data is to be interpreted.  Specifically, this
   control vector identifies whether the NetBIOS Names in the NetBIOS Name
   List control vectors are the only ones accessible via the sending Data
   Link Switch.

   If a NetBIOS Name List control vector is specified and the NetBIOS Name
   Exclusivity control vector is missing, then the NetBIOS Names are not
   assumed to be the only  ones accessible via this switch.

   A node may specify that it supports no local NetBIOS names by including
   in its  capabilities the NetBIOS Name List Exclusivity CV (with byte 2
   == 0x01), and not including any instances of the NetBIOS Name List CV.

AIW DLSw Related Interest Group                              [Page 71]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Offset  Length  Value       Contents
   ------  ------  -----       --------
      0       1    0x03        Length of the Exclusivity structured
                               subfield

      1       1    0x88        key = 0x88 that identifies this as the
                               NetBIOS Name Exclusivity structured
                               subfield

      2       1                an indicator of the relationship of the
                               NetBIOS Names to the sending Data Link
                               Switch.
                                 0x00     the NetBIOS Names specified in
                                          this Capabilities Exchange
                                          can be accessed via this
                                          switch but are not the
                                          exclusive set (i.e. other
                                          entities are accessible in
                                          addition to the ones specified)

                                 0x01     the NetBIOS Names specified in
                                          this Capabilities Exchange
                                          are the only ones accessible
                                          via this switch.

7.5.9. MAC Address List (0x89) Control Vector

   The MAC Address List control vector identifies one or more MAC addresses
   that are accessible through the sending Data Link Switch.  This control
   vector specifies a single MAC address value and MAC address mask value
   to identify the MAC address or range of MAC addresses.  MAC addresses
   and masks are in non-canonical (Token-Ring) format in this control
   vector.

   This control vector is optional and can be repeated if necessary.

   Note 1: If a particular MAC address, <mac-addr>, satisfies the following
   algorithm, then <mac-addr> is assumed to be accessible via the sending
   Data Link Switch:

   <mac-addr> & <mac-addr-mask> == <mac-addr-value>

   where:  <mac-addr-value> is the MAC Address
                            Value specified in
                            this control vector

           <mac-addr-mask>  is the MAC Address
                            Mask specified in
                            this control vector

AIW DLSw Related Interest Group                              [Page 72]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Note 2:  If an individual MAC Address is desired, then <mac-addr-value>
   should be the individual MAC address and <mac-addr-mask> should be
   0xFFFFFFFFFFFF.

   Offset  Length  Value       Contents
   ------  ------  -----       --------
      0       1    0x0E        Length of the MAC Address List
                               structured subfield

      1       1    0x89        key = 0x89  that identifies this as the
                               MAC Address List structured subfield

     2-7      6                the 6-byte MAC Address Value,
                               <mac-addr-value> in the above formula

     8-13     6                the 6-byte MAC Address Mask,
                               <mac-addr-mask> in the above formula

7.5.10. NetBIOS Name List (0x8A) Control Vector

   The NetBIOS Name List control vector identifies one or more NetBIOS
   names that are accessible through the sending Data Link Switch.  This
   control vector specifies a single NetBIOS name in ASCII.  However, the
   NetBIOS name can consist of "don't care" and "wildcard" characters to
   match on a number of NetBIOS names.  If an individual character position
   in the NetBIOS name in this control vector contains a '?', then the
   corresponding character position in real NetBIOS name is a "don't care".
   If a NetBIOS name in this control vector ends in '*', then the remainder
   of real NetBIOS names is a "don't care".  '*' is only considered a
   wildcard if it appears at the end of a name.

   All blanks or nulls at the end of NetBIOS names in this control vector
   are ignored.   NetBIOS names which have fewer than 16 bytes and which do
   not end with  '*' are not assumed to have a trailing '*'; the "wildcard"
   character must be explicit.

   NetBIOS group names can exist across several LANs/networks.  As such,
   NetBIOS  group names received in a NetBIOS Name List Control Vector can
   not be treated the same as NetBIOS individual names.  The
   Individual/Group Flag allows Data  Link Switches to distinguish between
   the two.

   This control vector is optional and can be repeated if necessary.

AIW DLSw Related Interest Group                              [Page 73]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Offset  Length  Value       Contents
   ------  ------  -----       --------
      0       1    0xn         Length of the NetBIOS Name List
                               structured subfield (maximum = 0x12)

      1       1    0x8A        key = 0x8A  that identifies this as the
                               NetBIOS Name List structured subfield

      2       1                Individual/Group Flag
                               0x00 - Individual NetBIOS Name
                               0x01 - Group NetBIOS Name

     3-n     n-3               the NetBIOS name with possible embedded
                               '?' and terminating '*'.

7.6. Capabilities Exchange Responses

   There are two kinds of DLSw Capabilities Exchange Responses: positive
   and negative.  A positive response is returned to the sending Data Link
   Switch if there were no errors encountered in the DLSw Capabilities
   Exchange Request.  A negative response is returned if there is at least
   one error encountered.

   A positive DLSw Capabilities Exchange Response has the following overall
   format:

       +----+----+
       | LL | ID |
       +----+----+

       0-1         Length, in binary, of the DLSw Capabilities Exchange
                   Response GDS Variable.  The value of LL in this case
                   is 0x0004.

       2-3         GDS Id: 0x1521

AIW DLSw Related Interest Group                              [Page 74]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   A negative DLSw Capabilities Exchange Response has the following overall
   format:

   +----+----+--------+--------+
   | LL | ID | Offset | Reason |
   +----+----+--------+--------+

   0-1         Length, in binary, of the DLSw Capabilities Exchange
               Response GDS Variable.  The value of LL is the sum of
               the length of all fields in the GDS Variable (i.e.
               length of LL + length of ID + length of Offsets/Reasons).

   2-3         GDS Id: 0x1521

   4-5         Offset into the DLSw Capabilities Exchange Request of the
               error.  Offset should always point to the start of the
               GDS Variable or a specific control vector.

   6-7         Reason code that uniquely identifies the error.  Specific
               values for the reason code are:

                 0x0001        invalid GDS length for a DLSw Capabilities
                               Exchange Request.  (The value of Offset
                               is ignored.)

                 0x0002        invalid GDS id for a DLSw Capabilities
                               Exchange Request.  (The value of Offset
                               is ignored.)

                 0x0003        Vendor Id control vector is missing.  (The
                               value of Offset is ignored.)

                 0x0004        DLSw Version control vector is missing. (The
                               value of Offset is ignored.)

                 0x0005        Initial Pacing Window control vector is
                               missing.  (The value of Offset is ignored.)

                 0x0006        length of control vectors doesn't correlate
                               to the length of the GDS variable
                 0x0007        invalid control vector id

                 0x0008        length of control vector invalid

                 0x0009        invalid control vector data value

                 0x000A        duplicate control vector (for non-repeating
                               control vectors)

                 0x000B        out-of-sequence control vector (for
                               repeating control vector)

                 0x000C        DLSw Supported SAP List control vector is
                               missing.

AIW DLSw Related Interest Group                              [Page 75]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

                               (The value of Offset is ignored.)

   Note:  Multiple Offset,Reason pairs can be returned with one pair for
   each error encountered.

AIW DLSw Related Interest Group                              [Page 76]